vidaone: Add support for new layout (version 2).
authoroliskoli <oliskoli>
Mon, 23 Jun 2008 18:43:50 +0000 (18:43 +0000)
committeroliskoli <oliskoli>
Mon, 23 Jun 2008 18:43:50 +0000 (18:43 +0000)
vidaone.c

index 91cfcafc7ef44ca5ecacba8d6114a223d46824f1..630e2128b1616c44c5dee856515013377c4f5995 100644 (file)
--- a/vidaone.c
+++ b/vidaone.c
 
 #define MYNAME "vidaone"
 
+#define VIDAONE_VER    "ver"
+
+static char *vidaone_opt_ver;
+static int vidaone_ver;
+
 static
 arglist_t vidaone_args[] = {
+       {VIDAONE_VER, &vidaone_opt_ver, 
+               "Version of VidaOne file to read or write (1 or 2)",
+               "1", ARGTYPE_INT, "1", "2"},
        ARG_TERMINATOR
 };
 
@@ -51,6 +59,7 @@ static gbfile *fin, *fout;
 static void
 vidaone_rd_init(const char *fname)
 {
+       vidaone_ver = atoi(vidaone_opt_ver);
        fin = gbfopen(fname, "rb", MYNAME);
 }
 
@@ -70,6 +79,8 @@ vidaone_read(void)
 
                wpt->latitude = gbfgetdbl(fin);
                wpt->longitude = gbfgetdbl(fin);
+               if (vidaone_ver >= 2)
+                       wpt->altitude = gbfgetflt(fin);
                (void) gbfgetflt(fin);
                
                /* Only one basic check of data integrity */
@@ -88,6 +99,7 @@ vidaone_read(void)
 static void
 vidaone_wr_init(const char *fname)
 {
+       vidaone_ver = atoi(vidaone_opt_ver);
        fout = gbfopen(fname, "wb", MYNAME);
 }
 
@@ -102,6 +114,8 @@ vidaone_trkpt(const waypoint *wpt)
 {
        gbfputdbl(wpt->latitude, fout);
        gbfputdbl(wpt->longitude, fout);
+       if (vidaone_ver >= 2)
+                       gbfputflt(wpt->altitude, fout);
        gbfputflt(0, fout);
 }